home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Source / GNU / libg++ / libiberty / getcwd.c < prev    next >
C/C++ Source or Header  |  1994-02-15  |  2KB  |  72 lines

  1. /* Emulate getcwd using getwd.
  2.    Copyright 1991 Free Software Foundation, Inc.
  3.  
  4. This file is part of the libiberty library.
  5. Libiberty is free software; you can redistribute it and/or
  6. modify it under the terms of the GNU Library General Public
  7. License as published by the Free Software Foundation; either
  8. version 2 of the License, or (at your option) any later version.
  9.  
  10. Libiberty is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13. Library General Public License for more details.
  14.  
  15. You should have received a copy of the GNU Library General Public
  16. License along with libiberty; see the file COPYING.LIB.  If
  17. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  18. Cambridge, MA 02139, USA.  */
  19.  
  20. /*
  21.  
  22. NAME
  23.  
  24.     getcwd -- get absolute pathname for current working directory
  25.  
  26. SYNOPSIS
  27.  
  28.     char *getcwd (char pathname[len], len)
  29.  
  30. DESCRIPTION
  31.  
  32.     Copy the absolute pathname for the current working directory into
  33.     the supplied buffer and return a pointer to the buffer.  If the 
  34.     current directory's path doesn't fit in LEN characters, the result
  35.     is NULL and errno is set.
  36.  
  37. BUGS
  38.  
  39.     Emulated via the getwd() call, which is reasonable for most
  40.     systems that do not have getcwd().
  41.  
  42. */
  43.  
  44. #include <sys/param.h>
  45. #include <errno.h>
  46.  
  47. extern char *getwd ();
  48. extern int errno;
  49.  
  50. #ifndef MAXPATHLEN
  51. #define MAXPATHLEN 1024
  52. #endif
  53.  
  54. char *
  55. getcwd (buf, len)
  56.   char *buf;
  57.   int len;
  58. {
  59.   char ourbuf[MAXPATHLEN];
  60.   char *result;
  61.  
  62.   result = getwd (ourbuf);
  63.   if (result) {
  64.     if (strlen (ourbuf) >= len) {
  65.       errno = ERANGE;
  66.       return 0;
  67.     }
  68.     strcpy (buf, ourbuf);
  69.   }
  70.   return buf;
  71. }
  72.